/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.elkastud.model;

/**
 * Gives api for computing two nucleobases resemblance
 * Implemented by objects with NucleotideResemblance algo/matrix
 * Used by DNA Sequence matching algorithms
 *
 * @see Nucleobase
 * @author Jakub Skierbiszewski
 */
public interface INucleobaseResemblance
{
	/**
	 * Returns resemblance of TWO nucleobases
	 * @param a
	 * @param b
	 * @return value of resemblance
	 */
	public short getResemblance(Nucleobase a, Nucleobase b);

	/**
	 * Returns resemblance of THREE nucleobases
	 * @param a
	 * @param b
	 * @param c
	 * @return
	 */
	public short getResemblance(Nucleobase a, Nucleobase b, Nucleobase c);

	/**
	 * @return gap penalty
	 */
	public short getGapPenalty();
}
